Amazon VPC での AZ を跨いだ仮想プライベート IP アドレスの実装方法
困っていた内容
Pacemaker を使用しての冗長構成を構築するため仮想プライベート IP アドレスの実装を検討しています。ただし、フェイルオーバー時に AZ を跨いでの仮想プライベート IP アドレスの付け替えを想定していますが、セカンダリプライベート IP アドレスはサブネットをまたぐことができないためフェイルオーバー時に仮想プライベート IP アドレスの付け替えを行うことができません。
どう対応すればいいの?
Amazon VPC の CIDR 範囲外の IP アドレスを仮想プライベート IP アドレスとして利用することで AZ を跨いだ仮想プライベート IP アドレスの実装が可能です。
具体的には VPC のルートテーブルに、プライマリとして動作する EC2インスタンスの ENI を指定し、EC2 の OS ネットワーク設定することで仮想プライベート IP アドレス宛てのトラフィックを受信することが可能です。
例えば、以下のような構成の場合
- VPC の CIDR: 10.1.0.0/16
- 仮想プライベート IP アドレス: 10.2.0.10/32
ルートテーブルを以下のように設定する。
OS 側のネットワークで以下のように設定する
# ip a show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000 link/ether 0a:b6:9a:80:f2:fe brd ff:ff:ff:ff:ff:ff inet 10.1.1.24/24 brd 10.1.1.255 scope global dynamic eth0 valid_lft 3142sec preferred_lft 3142sec inet 10.2.0.10/32 scope global eth0 ← 仮想プライベート IP アドレスの設定を追加 valid_lft forever preferred_lft forever inet6 fe80::8b6:9aff:fe80:f2fe/64 scope link valid_lft forever preferred_lft forever
なお、フェイルオーバー発生時にはルートテーブル上で仮想プライベート IP アドレスの宛先をプライマリからセカンダリとして動作する EC2 インスタンスの ENI を指定する必要があります。
注意事項
基本的には ELB の利用や RDS マルチAZ 構成、Route 53 の別名指定が利用が出来ないかを検討しましょう。
やむを得ず利用する場合は利用の前に充分な評価検証を実施した上でご利用ください。